package com.itheima.autoconfig.mq;

import cn.hutool.core.lang.UUID;
import org.slf4j.MDC;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessagePostProcessor;

import static com.itheima.constants.Constant.REQUEST_ID_HEADER;


public class BasicIdMessageProcessor implements MessagePostProcessor {
    // 消息发送之前，添加请求ID
    /**
     * 该代码实现了一个消息处理器，功能如下：
     * 从MDC中获取请求ID（requestId），如果为空，则生成一个新的UUID作为请求ID。
     * 将请求ID设置为消息的头部属性。
     * 返回处理后的消息对象。
     * @param message
     * @return
     * @throws AmqpException
     */
    @Override
    public Message postProcessMessage(Message message) throws AmqpException {
        String requestId = MDC.get(REQUEST_ID_HEADER);
        if (requestId == null) {
            requestId = UUID.randomUUID().toString(true);
        }
        // 写入RequestID标示
        message.getMessageProperties().setHeader(REQUEST_ID_HEADER, requestId);
        return message;
    }
}
